草庐IT

C++,关于 fprintf 和 ofstream

全部标签

c++ - 关于 C++ 指针和引用,需要澄清

请问下列哪项是错误的?据我了解,指针表示某种类型的地址。所以,inti=18,指向它的指针是int*pI=&i;下面两个声明是有效的voidfoo(int&something)//Willacceptanaddressofsomethingvoidbar(int*something)//Willacceptapointertosomething当我们声明一个函数为voidbar(int*something)我们最好发送一个指向某物的指针。事实上,foo(pI)有效。按照同样的逻辑,看的时候voidfoo(int&something)我们应该向它发送一个指向int的地址作为参数,那么:为

c++ - 关于 C++ 中的转换运算符的一些疑问

我们所知道的reinterpret_cast可以将任何指针类型转换为任何另一种指针类型。关于这个cast运算符,我想问的问题是:reinterpret_cast是如何工作的,允许reinterpret_cast工作的魔法(内部实现)是什么?使用reinterpret_cast时如何保证安全?据我所知,它不能保证安全转换,那么在使用reinterpret_cast时要采取什么预防措施?这个运算符的实际用法是什么。在我的专业编程经验中,我还没有真正遇到过它,如果不使用这个运算符,我就无法绕过它。除了通常的int*到char*之外,任何实际示例都会非常有帮助和赞赏。关于一般类型转换运算符的另

Code Complete 关于封装的 C++ 建议?

CodeComplete中关于“良好封装”的部分,建议隐藏私有(private)实现细节。C++中给出了一个例子。这个想法基本上是将接口(interface)与实现完全分离,即使在类级别也是如此。classEmployee{public:...Employee(...);...FullNameGetName()const;StringGetAddress()const;private:EmployeeImplementation*m_implementation;};这样真的可以很好地利用时间吗?这不仅看起来效率低下(这会带来什么样的性能损失?),而且CodeComplete的整个座右

c++ - 关于名称隐藏和虚函数的混淆

引用另一个soquestion考虑代码:classBase{public:virtualvoidgogo(inta){printf("Base::gogo(int)\n");};virtualvoidgogo(int*a){printf("Base::gogo(int*)\n");};};classDerived:publicBase{public:virtualvoidgogo(int*a){printf("Derived::gogo(int*)\n");};};intmain(){//1)Derived*obj=newDerived;obj->gogo(7);//thisisill

c++ - std::ifstream::read 或 std::ofstream::write 参数为零?

是否完全可以(=根据标准定义明确的行为)调用:mystream.read(buffer,0);或mystream.write(buffer,0);(当然不会读取或写入任何内容)。我想知道在调用这两个函数之一之前是否必须测试提供的大小是否为空。 最佳答案 是的,行为是明确定义的:两个函数都将完成未格式化输入/输出函数的Action(构造哨兵,如果设置了eofbit则设置failbit,必要时刷新绑定(bind)流),然后它们将得到对此条款:§27.7.2.3[istream.unformatted]/30Charactersareex

c++ - 关于如何将 F# 代码与 native C++ 集成的任何想法?

我想在nativeC++中使用一些F#代码。更准确地说,我想用F#编写一些数据结构,然后在我的C++代码中使用它们。我不知道如何将托管F#与非托管C++混合使用。如何创建粘合层? 最佳答案 一种方法是在C++/CLI中创建一个程序集,该程序集将是混合模式程序集,可以引用您的F#程序集并同时导出native符号,因此它们以后可以在nativec++库中使用。这个选项是最通用的。您可以使用此方法创建双向工作的“桥梁”。我在执行此操作时喜欢使用的一种方法(我这样做是为了在另一个nativec++/mfc应用程序中包含基于C#、Wpf的GU

c++ - 关于服务定位器模式

服务定位器似乎是一个非常有用的概念,我想在我的应用程序中实现它。但是,关于它应该如何实现以及应该如何与其他编程范例结合使用,我有几个问题。SL应该管理它存储的服务吗?也就是说,当SL被销毁时,它应该也销毁服务本身,还是应该将其留给注册服务的人?依赖注入(inject)呢?现在我有了一个SL,将SL作为参数传递有什么意义,还是我应该全局访问它?毕竟,SL也涵盖了DI的大部分目的,我不想用一个更多的参数来让我的很多函数变得困惑。 最佳答案 你会认为这篇文章是我写的(我没有),考虑到我经常引用它:ServiceLocatorisanAnt

c++ - 有没有关于如何使用英特尔 MKL FFT 的简单 C++ 示例?

我需要执行FFT和逆FFT转换。输入将是doublevector和矩阵。理想情况下,输出应该是一个std::complex数组,但我可以接受double_Complex。我还没有找到任何简单的例子,所有的英特尔例子都在没有足够的注释的情况下同时做很多事情。我只想要一个C++中的简单示例,将double的vector(或矩阵)作为输入并输出FFT转换后的结果(最好使用std::complex)。 最佳答案 我最终测试了几件事,最终得到了这三个函数,它们可以执行我想要的操作并且我考虑了简单的示例。我针对一些输入对其进行了测试,并获得了良

c++ - 关于C++迭代器的问题

在C++中,为什么我们不能使用'>'或'”或“另外,为什么我们不能计算出迭代器的内容?例如“cout一般来说,迭代器和指针之间的内在区别是什么?我曾经认为它们很相似,但我想我必须理解这一点才能更深入地理解C++。问题#2:谢谢大家的精彩回答。我还有一个关于迭代器的问题。当迭代器越界时,为什么c++打印出类似“50397953”的内容?它不应该打印NULL或'\0'之类的东西吗? 最佳答案 std::list具有双向迭代器,要求它们具有可比性没有任何意义。甚至不清楚如何实现std::list为了符合这样的要求。然而,由于随机访问迭代器

c++ - std::ofstream::close() 实际上做了什么?

本题:Howtoprotectlogfromapplicationcrash?把我带到了另一个-std::ofstream::close()到底做了什么?我知道它调用flush(),这是一回事。但还有什么?关闭文件实际上是什么?编辑:让我重新表述一下我的问题-在调用close()期间是否对实际文件进行了任何物理操作,还是只是std::ofstream内部清理的东西? 最佳答案 除了刷新用户空间缓冲区,即flush(),close(2)在底层文件描述符上被调用。这取决于操作系统然后会发生什么,但很可能文件占用的实际存储空间没有任何变化